﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace PRE.Catalog
{
    public partial class frmQLTB : PRE.Catalog.FrmBase
    {
        DAL.Entities_DAL.QLTB_DAL _qltb = new DAL.Entities_DAL.QLTB_DAL();
        DAL.Entities_DAL.THIETBI_DAL _tb = new DAL.Entities_DAL.THIETBI_DAL();
        DAL.Entities_DAL.Phong_DAL _phong = new DAL.Entities_DAL.Phong_DAL();
        public frmQLTB()
        {
            InitializeComponent();
        }
        DataTable _bang1;
        DataTable _bang2;
        DataTable _bang3;

        private void frmQLTB_Load(object sender, EventArgs e)
        {          
            DataTable _cbphong = _phong.load_phong();
            txtMaphong.Properties.DataSource = _cbphong;

            DataTable _load_ltb = _tb.load_LTB();
            cbLTB.Properties.DataSource = _load_ltb;
        }

        private void txtMaphong_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                txtMTB.DataBindings.Clear();
                txtSLTB.DataBindings.Clear();
                txtSLTB.Text = "";
                txtMTB.Text = "";
                _bang1 = _qltb.load_qltb_theo_phong(txtMaphong.EditValue + "");
                dsQLTB.DataSource = _bang1;
            }
            catch { MessageBox.Show("Load dữ liệu không đúng!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error); ;};
        }

        private void cbLTB_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                _bang2 = _tb.load_tb_theo_ltb(cbLTB.EditValue + "");
                dsTB.DataSource = _bang2;
            }
            catch { MessageBox.Show("Load dữ liệu không đúng!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error); };
        }

        private void dsQLTB_Click(object sender, EventArgs e)
        {
            try
            {
                txtSLTB.Text = "";
                txtMTB.DataBindings.Clear();
                txtSLTB.DataBindings.Clear();
                //txtMTB.DataBindings.Add("EditValue", _dtb, ".MA_PHONG");
                txtMTB.DataBindings.Add("EditValue", _bang1, ".MA_TB");

                txtSLTB.DataBindings.Add("EditValue", _bang1, ".SL_NHAN");

            }
            catch { MessageBox.Show("Load dữ liệu không đúng!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error); };
        }

        private void cmdIn_Click(object sender, EventArgs e)
        {
            var frm = new Report.Report_Base();
            var xr = new Reports.XR_QLTB();
            xr.DataSource = _qltb.dsQLTB(txtMaphong.EditValue + "");
            frm.SetReport(xr);
            frm.Show();
        }

        private void dsTB_Click(object sender, EventArgs e)
        {
            try
            {
                txtMatb.DataBindings.Clear();
                sltb.DataBindings.Clear();
                ttrang.DataBindings.Clear();
                //txtMTB.DataBindings.Add("EditValue", _dtb, ".MA_PHONG");
                txtMatb.DataBindings.Add("EditValue", _bang2, ".MA_TB");
                ttrang.DataBindings.Add("EditValue", _bang2, ".TRANG_THAI");
                sltb.DataBindings.Add("EditValue", _bang2, ".SL_NHAP");

                txttrunggian.DataBindings.Clear();

                txttrunggian.DataBindings.Add("EditValue", _bang1, ".SL_NHAN");
            }
            catch { MessageBox.Show("Load dữ liệu không đúng!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error); };
        }
       

        private void cmdNhan_Click(object sender, EventArgs e)
        {
            try
            {
                string mp = txtMaphong.EditValue + "";

                var _slcongthem = (Convert.ToInt32(txtSLnhan.Text) + Convert.ToInt32(txttrunggian.Text));

                var _kt = _qltb.kt_thietbi(mp, txtMatb.Text);

                if (_kt.Rows.Count > 0)
                {
                    var kt = _qltb.cap_nhat_qltb(_slcongthem, txtMatb.Text, txtMaphong.EditValue + "");

                    if (kt)
                    {
                        MessageBox.Show("Đã cập nhật số lượng thiết bị thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        _bang2 = _tb.load_tb_theo_ltb(cbLTB.EditValue + "");
                        dsTB.DataSource = _bang2;

                        //cap nhat tb trong thiet bi
                        int slcl = Convert.ToInt32(sltb.Text) - Convert.ToInt32(txtSLnhan.Text);
                        var ok = _tb.cap_nhat(slcl, txtMatb.Text);

                        if (ok)
                        {
                            MessageBox.Show("Đã cập nhật số lượng thiết bị thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            _bang2 = _tb.load_tb_theo_ltb(cbLTB.EditValue + "");
                            dsTB.DataSource = _bang2;
                        }
                        _bang1 = _qltb.load_qltb_theo_phong(txtMaphong.EditValue + "");
                        dsQLTB.DataSource = _bang1;
                    }

                    else
                    {
                        MessageBox.Show("Lỗi! Lưu thất bại", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    }
                }
                else
                {
                    var o = new DAL.Entities.QUAN_LY_THIET_BI
                    {
                        MA_TB = txtMatb.Text,
                        MA_PHONG = txtMaphong.EditValue + "",
                        NGAY_NHAN = Convert.ToDateTime(dtNgay.EditValue + ""),
                        SL_NHAN = Convert.ToInt32(txtSLnhan.Text),
                        TT_HOAT_DONG = ttrang.Text,
                        GHI_CHU = ttrang.Text,
                    };

                    //them
                    var oki = _qltb.Insert(o);
                    if (oki)
                    {
                        MessageBox.Show("Đã lưu thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        _bang1 = _qltb.load_qltb_theo_phong(txtMaphong.EditValue + "");
                        dsQLTB.DataSource = _bang1;
                        int slcl = Convert.ToInt32(sltb.Text) - Convert.ToInt32(txtSLnhan.Text);
                        var kt = _tb.cap_nhat(slcl, txtMatb.Text);

                        if (kt)
                        {
                            MessageBox.Show("Đã cập nhật số lượng thiết bị thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            _bang2 = _tb.load_tb_theo_ltb(cbLTB.EditValue + "");
                            dsTB.DataSource = _bang2;
                        }

                        else
                        {
                            MessageBox.Show("Lỗi! Lưu thất bại", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);

                        }
                    }

                }
            }
            catch { MessageBox.Show("Load dữ liệu không đúng!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error); };
        }
        //bay loi k cho nhap ky tu
        private static bool IsNumber(string val)
        {
            if (val != "")
                return Regex.IsMatch(val, @"^[0-9]*$");
            else return true;
        }
        private void txtSLnhan_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((!char.IsNumber(e.KeyChar)) && (!e.Equals(Keys.Back)) && (!char.IsDigit(e.KeyChar)) && (!char.IsControl(e.KeyChar)))
            {
                MessageBox.Show("Lỗi! Chỉ nhập kí tự số", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                e.Handled = true;
            }    
        }

        private void txtSLnhan_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                if (Convert.ToInt32(txtSLnhan.Text) > Convert.ToInt32(sltb.Text))
                {

                    MessageBox.Show("Số lượng nhập lớn hơn số lượng hiện có!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;

                }
            }
            catch { MessageBox.Show("Load dữ liệu không đúng!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error); };
        }   
    }
}
